package org.gavin.core.utils;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.TreeMap;

/**
 * Md5Utlis
 *
 * @author grl
 * @date 2024/5/7
 */
public class Md5Utils {

    /**
     * 多次 Md5
     * @param times 次数
     * @param key 待计算的原始值
     * @return String
     */
    public static String getMd5(int times,String key) {
        String md5Value = key;
        for (int i= 0; i <= times; i++){
            md5Value = DigestUtils.md5DigestAsHex(md5Value.getBytes(StandardCharsets.UTF_8));
        }
        return md5Value;
    }
    /**
     * 一次 Md5
     * @param key 待计算的原始值
     * @return String
     */
    public static String getMd5(String key) {
        return DigestUtils.md5DigestAsHex(key.getBytes(StandardCharsets.UTF_8));
    }


    /**
     *  获取传入JSON 数据 的 1次 md5 值
     * @param obj
     * @return
     */
    public static String getJsonMd5(String obj) {
        if (obj != null) {
            TreeMap sortedMap = new TreeMap(JSONObject.parseObject(obj));
            return getMd5(JSON.toJSONString(new JSONObject(sortedMap)));
        }
        return null;
    }
}
